From 005a3da18fe89c7341c415d106f1abb5afd3450c Mon Sep 17 00:00:00 2001 From: Matthias Clasen Date: Fri, 5 Jun 2020 18:39:08 -0400 Subject: [PATCH] gtk-demo: Another way to trigger theme benchmark The click on the headerbar seems broken atm, so add an explicit button to trigger the cycling among the themes. --- demos/gtk-demo/themes.c | 26 ++++++++++++++++++++++++++ demos/gtk-demo/themes.ui | 5 +++++ 2 files changed, 31 insertions(+) diff --git a/demos/gtk-demo/themes.c b/demos/gtk-demo/themes.c index 1560dae952..edcdd2ec35 100644 --- a/demos/gtk-demo/themes.c +++ b/demos/gtk-demo/themes.c @@ -165,6 +165,29 @@ clicked (GtkGestureClick *gesture, } } +static void +toggle_cycle (GObject *button, + GParamSpec *pspec, + gpointer data) +{ + gboolean active; + GtkWidget *window; + + g_object_get (button, "active", &active, NULL); + + window = gtk_widget_get_ancestor (GTK_WIDGET (button), GTK_TYPE_WINDOW); + + if (active && !tick_cb) + { + tick_cb = gtk_widget_add_tick_callback (window, change_theme, data, NULL); + } + else if (!active && tick_cb) + { + gtk_widget_remove_tick_callback (window, tick_cb); + tick_cb = 0; + } +} + GtkWidget * do_themes (GtkWidget *do_widget) { @@ -174,6 +197,7 @@ do_themes (GtkWidget *do_widget) { GtkBuilder *builder; GtkWidget *header; + GtkWidget *button; GtkGesture *gesture; builder = gtk_builder_new_from_resource ("/themes/themes.ui"); @@ -187,6 +211,8 @@ do_themes (GtkWidget *do_widget) g_signal_connect (gesture, "pressed", G_CALLBACK (clicked), builder); gtk_widget_add_controller (header, GTK_EVENT_CONTROLLER (gesture)); + button = GTK_WIDGET (gtk_builder_get_object (builder, "toggle")); + g_signal_connect (button, "notify::active", G_CALLBACK (toggle_cycle), builder); gtk_widget_realize (window); } diff --git a/demos/gtk-demo/themes.ui b/demos/gtk-demo/themes.ui index ebf2d940a8..91e4efbba6 100644 --- a/demos/gtk-demo/themes.ui +++ b/demos/gtk-demo/themes.ui @@ -5,6 +5,11 @@ 1 + + + Cycle + + -- 2.30.2